home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD022b.dsk / DELAY ROUTINE.bas < prev    next >
BASIC Source File  |  2003-06-12  |  10KB  |  262 lines

  1. 10  GOTO 100
  2. 11 :
  3. 12  REM LONG DELAY
  4. 13 :
  5. 20  FOR I = 1 TO 1500:KEY =  PEEK(49152): IF KEY >127  THEN  POKE 49168,0: RETURN 
  6. 30  NEXT I: POKE 49168,0: RETURN 
  7. 35 :
  8. 36  REM SHORT DELAY
  9. 37 :
  10. 40  FOR I = 1 TO 250:KEY =  PEEK(49152): IF KEY >127  THEN  POKE 49168,0: RETURN 
  11. 45  NEXT I: POKE 49168,0: RETURN 
  12. 46 :
  13. 100  REM EDUCATION PROGRAM
  14. 105  REM ***********************
  15. 110  REM FOR SOFTDISK MAGAZETTE
  16. 115  REM 
  17. 120  REM   BY ERNIE MERLO
  18. 125  REM   2415 LINCOLN AVE.
  19. 130  REM   BELMONT, CA. 94002
  20. 135  REM   (415) 595-5945
  21. 140  REM ************************
  22. 145  REM   6/4/83
  23. 150  REM ************************
  24. 155  REM 
  25. 160  REM 
  26. 165  TEXT : HOME :D$ =  CHR$(4): REM CTRL-D
  27. 170 :
  28. 175  REM THE FOLLOWING ROUTINE
  29. 180  REM DISPLAYS AND CENTERS
  30. 185  REM THE TITLE
  31. 190 :
  32. 195 T$ = "DELAY ROUTINE":L =  LEN(T$)
  33. 200  HTAB 21 -L/2: PRINT T$
  34. 205 :
  35. 210  REM THE FOLLOWING ROUTINE
  36. 215  REM UNDERLINES THE TITLE
  37. 220 :
  38. 225  FOR I = 1 TO 40: PRINT "=";: NEXT 
  39. 230 :
  40. 235  REM THE FOLLOWING ROUTINE 
  41. 240  REM LOWERS THE TOP OF THE
  42. 245  REM SCREEN AREA SO IT WONT
  43. 250  REM BE CLEARED
  44. 255 :
  45. 260  POKE 34,4: HOME 
  46. 265 :
  47. 270  PRINT "THIS SIMPLE ROUTINE WILL DELAY YOUR"
  48. 275  PRINT "PROGRAM FOR ANY LENGTH OF TIME."
  49. 280  REM 
  50. 285  PRINT : PRINT "IT ALSO WILL MOVE AHEAD IF THE USER"
  51. 290  PRINT "WISHES. IT WORKS GREAT FOR DISPLAYING"
  52. 295  PRINT "INSTRUCTIONS OR DATA ON THE SCREEN."
  53. 300  PRINT : PRINT "IF THE READER IS FAST THEY ONLY HAVE"
  54. 305  PRINT "TO TAP THE SPACE BAR (OR ANY KEY)"
  55. 310  PRINT "TO MOVE AHEAD."
  56. 315  PRINT : PRINT "IF THE USER WISHES THEY CAN READ THE"
  57. 320  PRINT "INFORMATION AS LONG AS IT IS DISPLAYED"
  58. 325  VTAB 20: HTAB 1: PRINT "THE ROUTINE IS WORKING NOW"
  59. 330  PRINT "THE PROGRAM WILL CONTINUE AUTOMATICALLY": PRINT "PRESS THE SPACE BAR TO SPEED IT UP"
  60. 335  GOSUB 20
  61. 340  PRINT : PRINT "THE ROUTINE IS IN A FOR/NEXT LOOP"
  62. 350  PRINT "IN THE BEGINING OF THIS PROGRAM."
  63. 360  PRINT "THE ROUTINE READS THE KEYBOARD AND"
  64. 365  PRINT "WAITS UNTIL THE LOOP ENDS OR A KEY IS"
  65. 370  PRINT "PRESSED."
  66. 375  PRINT : PRINT "THE ROUTINE IS IN THE FORM OF A SUB-"
  67. 380  PRINT "ROUTINE, AND CAN BE USED FROM ANYWHERE"
  68. 385  PRINT "IN THE PROGRAM."
  69. 390  PRINT : PRINT "THE SUBROUTINE USES ONE PEEK AND ONE"
  70. 395  PRINT "POKE. "
  71. 400  PRINT : PRINT "PEEK(49152) AND POKE 49168,0"
  72. 405  GOSUB 20: REM SLOW ROUTINE
  73. 410  PRINT : PRINT "THE PEEK IS A MEMORY LOCATION THAT"
  74. 415  PRINT "READS THE KEYBOARD"
  75. 420  PRINT : PRINT "THE POKE CLEARS THE KEYBOARD STROBE"
  76. 430  PRINT "AND RETURNS THE STROBE TO A VALUE LESS"
  77. 435  PRINT "128. IF THE VALUE OF THE KEYBOARD IS"
  78. 440  PRINT "MORE THAN 127 A KEY HAS BEEN PRESSED"
  79. 445  PRINT : PRINT "HERE IS THE SUBROUTINE"
  80. 450  GOSUB 20
  81. 455  LIST 12 -45
  82. 460  GOSUB 20
  83. 465  PRINT : PRINT "LETS TAKE THIS SUBROUTINE APART BIT BY"
  84. 470  PRINT "BIT AND SEE WHAT MAKES IT TICK."
  85. 475  GOSUB 40
  86. 480  POKE 34,19: HOME 
  87. 485  PRINT "THE FIRST PART OF THIS ROUTINE IS THE"
  88. 490  PRINT "FOR/NEXT LOOP (FOR I = 1 TO 1500)"
  89. 492  GOSUB 20
  90. 495  PRINT : PRINT "THE PROGRAM WILL LOOP THRU LINES 20"
  91. 500  PRINT "AND 30 1500 TIMES."
  92. 505  GOSUB 20
  93. 510  VTAB 7: HTAB 5: INVERSE : PRINT "FOR I = 1 TO 1500:KEY =  PEEK"
  94. 520  VTAB 8: HTAB 6: PRINT "(49152): IF KEY > 127": NORMAL : HOME 
  95. 525  VTAB 10: HTAB 5: INVERSE : PRINT "NEXT I": NORMAL : HOME 
  96. 530  PRINT "THE PROGRAM LOOP IS IN INVERSE,THE LOOP"
  97. 540  PRINT "WILL CYCLE THRU THIS LOOP 1500 TIMES IF"
  98. 541  GOSUB 40
  99. 545  PRINT "NO KEY IS PRESSED."
  100. 550  GOSUB 40
  101. 555  FOR I = 4 TO 17: VTAB I: HTAB 1: PRINT "                                       ": NEXT I: VTAB 4: LIST 12 -45: HOME 
  102. 560  VTAB 8: HTAB 15: INVERSE : PRINT "IF KEY > 127 THEN  POKE"
  103. 565  VTAB 9: HTAB 6: PRINT "49168 ,0: RETURN": NORMAL : HOME 
  104. 570  PRINT "IF A KEY IS PRESSED THE VALUE OF PEEK-"
  105. 575  PRINT "(49152) WILL BE MORE THAN 127 AND THE"
  106. 580  GOSUB 40
  107. 585  PRINT "IF/THEN STATEMENT WILL BE TRUE."
  108. 590  GOSUB 40
  109. 591  PRINT 
  110. 595  PRINT "THE IF/THEN STATEMENT IS IN INVERSE."
  111. 600  PRINT : PRINT "IF THE IF/THEN STATEMENT IS TRUE": PRINT "THE POKE 49168,0 AND RETURN WILL BE": GOSUB 40: PRINT "EXECUTED, AND THE PROGRAM WILL CONTINUE."
  112. 605  GOSUB 20
  113. 610  POKE 34,4: HOME : LIST 12 -35
  114. 615  POKE 34,12: HOME : PRINT "IF NO KEY IS PRESSED THE"
  115. 620  PRINT "ROUTINE WILL LOOP THRU 1500 CYCLES."
  116. 625  PRINT : PRINT "WHEN I = 1500 THE LAST PART OF"
  117. 630  PRINT "LINE 30 WILL EXECUTE, AND THE PROGRAM": PRINT "WILL RESUME."
  118. 635  VTAB 11: HTAB 13: INVERSE : PRINT "POKE 49168,0: RETURN": NORMAL : GOSUB 20: HOME 
  119. 636  VTAB 11: HTAB 13: PRINT "POKE 49168,0: RETURN": HOME 
  120. 640  PRINT "THIS PROGRAM USES TWO SUBROUTINES, ONE"
  121. 645  PRINT "FOR LONG DELAYS AND ONE FOR SHORT."
  122. 650  PRINT : PRINT "THE LENGTH OF THE DELAY IS DETERMINED BY"
  123. 655  PRINT "THE NUMBER OF CYCLES THE LOOP EXECUTES."
  124. 660  PRINT "THE LARGER THE LOOP THE LONGER THE DELAY"
  125. 665  GOSUB 20
  126. 670  POKE 34,3: HOME 
  127. 675  LIST 12 -45
  128. 680  PRINT : PRINT "HERE ARE THE LISTINGS AGAIN,"
  129. 685  PRINT "NOTICE THE DIFFERENCE BETWEEN THE LONG": PRINT "AND SHORT ROUTINES."
  130. 690  GOSUB 20
  131. 700  HOME 
  132. 705 T$ = "A LITTLE QUIZ":L =  LEN(T$)
  133. 710  HTAB 21 -L/2: PRINT T$
  134. 720  POKE 34,7: HOME 
  135. 725  PRINT "WHAT DETERMINES THE LENGTH OF THE DELAY"
  136. 730  PRINT : PRINT "(A) LENGTH OF THE LOOP"
  137. 735  PRINT : PRINT "(B) MEMORY LOCATION "
  138. 740  PRINT : PRINT "ANSWER -->";: GET A$: PRINT : IF A$ = "A"  THEN 760
  139. 750  GOTO 650
  140. 760  PRINT : PRINT "CORRECT!!"
  141. 765  PRINT : PRINT "THE LONGER THE LOOP THE LONGER THE DELAY": GOSUB 40
  142. 770  HOME 
  143. 780  PRINT "WHAT DOES POKE 49168,0 DO"
  144. 785  PRINT : PRINT "(A) CLEARS MEMORY LOCATION 49168"
  145. 790  PRINT : PRINT "(B) CLEARS THE KEYBOARD STROBE"
  146. 795  PRINT : PRINT "(C) STARTS THE DELAY LOOP"
  147. 800  PRINT : PRINT "ANSWER--->";: GET A$: PRINT : IF A$ = "B"  THEN  GOTO 820
  148. 805  PRINT : PRINT "NOPE. IT CLEARS THE KEYBOARD STROBE."
  149. 810  GOTO 830
  150. 820  PRINT : PRINT "CORRECT!!"
  151. 830  PRINT : PRINT "IF YOU DON'T CLEAR THE KEYBOARD STROBE"
  152. 840  PRINT "THE ROUTINE WON'T WORK."
  153. 850  PRINT "THE KEYBOARD STROBE MUST BE CLEARED"
  154. 855  PRINT "AFTER EACH TIME IT IS USED, BY A"
  155. 890  PRINT "POKE49168,0..."
  156. 900  GOSUB 20
  157. 910  GOTO 1000
  158. 920  REM  DELAY LOOP WITHOUT POKE 49168,0"
  159. 925 :
  160. 930  FOR I = 1 TO 1000:KEY =  PEEK(49152): IF KEY >127  THEN  RETURN 
  161. 935 :
  162. 940  NEXT I: RETURN 
  163. 1000  HOME : VTAB 5: LIST 920 -940
  164. 1010  POKE 34,14: HOME 
  165. 1020  PRINT "YOU ARE IN THIS DELAY RIGHT NOW."
  166. 1025  PRINT : PRINT "WE WILL SLOW DOWN THE SPEED AND "
  167. 1027  PRINT "GOSUB 920 AGAIN TO SHOW IT WILL NOT WORK"
  168. 1030  FLASH : PRINT "PRESS RETURN IN 5 SECONDS": NORMAL 
  169. 1040  GOSUB 920
  170. 1045  VTAB 20: HTAB 1: PRINT "                          ": PRINT 
  171. 1050  SPEED= 50: PRINT "WE WILL ENTER THE ROUTINE "
  172. 1055 A$ = " SECONDS TO SUBROUTINE 920":B$ = " SECOND  TO SUBROUTINE 920"
  173. 1060  FOR I = 6 TO 1  STEP  -1: VTAB 23: HTAB 1: IF I >2  THEN  PRINT I;A$
  174. 1063  IF I < = 2  THEN  PRINT I;B$
  175. 1065  NEXT I: GOSUB 920
  176. 1070  SPEED= 255: POKE 34,3: HOME : VTAB 5
  177. 1080  PRINT "SEE, THE DELAY WAS NOT EVEN 1 SECOND."
  178. 1090  PRINT : PRINT "I JUST POKED 49168,0 AND WE ARE IN"
  179. 1095  PRINT "SUBROUTINE 920 RIGHT NOW AND IT WORKS"
  180. 1100  POKE 49168,0: GOSUB 920
  181. 1110  PRINT : PRINT "REMEMBER, CLEAR THE KEYBOARD STROBE"
  182. 1120  PRINT "BY POKING 49168,0, OR YOUR ROUTINE"
  183. 1130  PRINT "WILL NOT WORK."
  184. 1135  GOSUB 40
  185. 1140  PRINT : PRINT "HERE IS A REVIEW."
  186. 1150  GOSUB 40
  187. 1160  HOME : LIST 12 -45
  188. 1170  PRINT : PRINT "DO YOU UNDERSTAND THE SUBROUTINE?"
  189. 1180  PRINT : PRINT "PRESS NO FOR ANOTHER EXAMPLE."
  190. 1181  PRINT "PRESS (Y/N) ";: GET A$: PRINT : TEXT : HOME 
  191. 1185  IF A$ = "N"  THEN  GOSUB 1280
  192. 1190  VTAB 12: PRINT "WOULD YOU LIKE TO SEE THE PROGRAM"
  193. 1195  PRINT "AGAIN OR RETURN TO SOFTDISK?"
  194. 1200  PRINT : PRINT "(A)AGAIN  (S) SOFTDISK ";: GET A$
  195. 1210  PRINT : IF A$ = "A"  THEN  CLEAR : RUN 
  196. 1220  PRINT  CHR$(4);"RUN MENU"
  197. 1230  END 
  198. 1240  REM 
  199. 1250  REM THANK YOU BERT KERSEY
  200. 1260  REM BEAGLE BROS SOFTWARE
  201. 1270  REM AND PEEK & POKE CHARTS
  202. 1280  HOME :T$ = "DELAY ROUTINE":L =  LEN(T$): HTAB 21 -L/2: PRINT T$: FOR I = 1 TO 40: PRINT "=";: NEXT I
  203. 1290  POKE 34,4: HOME : LIST 12 -45
  204. 1295  PRINT : PRINT : PRINT "HERE ARE THE SUBROUTINES AGAIN"
  205. 1300  GOSUB 20
  206. 1305  POKE 34,20: HOME 
  207. 1310  PRINT "THE PROGRAM IS IN THIS ROUTINE RIGHT NOW."
  208. 1320  PRINT "THE LOOP IS GOING THRU LINE 20 & 30"
  209. 1325  GOSUB 40
  210. 1330  PRINT "IF YOU PRESS A KEY THE LOOP WILL END."
  211. 1340  GOSUB 40
  212. 1345  PRINT "IF NO KEY IS PRESSED THE LOOP WILL CYCLE"
  213. 1350  GOSUB 40
  214. 1355  PRINT "1500 TIMES AND RETURN TO THE PROGRAM"
  215. 1360  PRINT "WHERE IT LEFT OFF."
  216. 1365  GOSUB 40
  217. 1370  PRINT "YOU WILL NOTICE THE WORD KEY."
  218. 1375  GOSUB 40
  219. 1380  PRINT "KEY MAKES REFERENCE TO LOCATION 49152."
  220. 1390  GOSUB 40
  221. 1395  PRINT "PEEKING TO MEMORY LOCATION (PEEK(49152)"
  222. 1400  GOSUB 40
  223. 1405  PRINT "WILL CAUSE THE COMPUTER TO READ THE"
  224. 1410  GOSUB 40
  225. 1415  PRINT "KEYBOARD. IF THE VALUE OF THE KEYBOARD"
  226. 1420  GOSUB 40
  227. 1425  PRINT "IS LESS THE 128 THE COMPUTER KNOWS"
  228. 1430  GOSUB 40
  229. 1435  PRINT "THAT NO KEY HAS BEEN PRESSED."
  230. 1440  GOSUB 40
  231. 1445  PRINT "IF THE VALUE OF KEY IS MORE THEN 127,"
  232. 1450  GOSUB 40
  233. 1455  PRINT "THE COMPUTER KNOWS THAT A KEY HAS BEEN"
  234. 1460  GOSUB 40
  235. 1465  PRINT "PRESSED AND IT KNOWS WHAT KEY WAS"
  236. 1470  GOSUB 40
  237. 1475  PRINT "PRESSED BY THE VALUE OF LOCATION 49152"
  238. 1480  GOSUB 40
  239. 1485  PRINT "FOR EXAMPLE IF YOU PRESS RETURN"
  240. 1490  GOSUB 40
  241. 1495  PRINT "THE VALUE OF KEY WILL BE 141"
  242. 1500  GOSUB 40
  243. 1505  PRINT "HERE IS A SMALL EXAMPLE"
  244. 1510  GOSUB 40
  245. 1515  POKE 34,3: HOME 
  246. 1520  PRINT "SPACE BAR = 160"
  247. 1525  PRINT "RETURN    = 141"
  248. 1530  PRINT "  <-      = 136"
  249. 1535  PRINT "  ->      = 149"
  250. 1540  PRINT : PRINT "PRESS ANY KEY TO SEE THE VALUE OF"
  251. 1545  PRINT "MEMORY LOCATION 49152."
  252. 1550  PRINT : PRINT "PRESS " CHR$(34)"0" CHR$(34)" TO END"
  253. 1555  POKE 34,13: HOME 
  254. 1557 KEY =  PEEK(49152)
  255. 1558  IF KEY = 176  THEN 1590
  256. 1560  VTAB 17: HTAB 1: PRINT "KEY PRESSED IS "; CHR$(K)
  257. 1565  VTAB 15: HTAB 1: PRINT "MEMORY LOCATION 49152'S VALUE IS ";KEY
  258. 1575 K =  PEEK(49152): IF K >127  THEN  VTAB 15: HTAB 34: PRINT "   ": GOTO 1557
  259. 1585  GOTO 1575
  260. 1590  VTAB 22: PRINT "I HOPE THIS EXAMPLE HELPS"
  261. 1595  POKE 49168,0: GOSUB 40
  262. 1600  TEXT : HOME : RETURN